package com.corhyfar.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.corhyfar.beans.ClienteDTO;
import com.corhyfar.dao.ClienteDao;
import com.corhyfar.util.SQLConnection;

public class ClienteDaoImpl implements ClienteDao {

	Connection cn = null;
	PreparedStatement ps = null;
	ResultSet rs = null;

	@Override
	public ClienteDTO obtenerCliente(String dniCliente) throws SQLException {
		ClienteDTO obtenido = null;
		cn = new SQLConnection().GetConnection();
		String sql = "select * from CLIENTE where dniCliente=?";
		ps = cn.prepareStatement(sql);
		ps.setString(1, dniCliente);
		rs = ps.executeQuery();
		if (rs.next()) {
			obtenido = new ClienteDTO(rs.getInt(0), rs.getString(1),
					rs.getString(2), rs.getString(3), rs.getString(4),
					rs.getString(5), rs.getInt(6), rs.getInt(7), rs.getInt(8),
					rs.getInt(9), rs.getString(10), rs.getInt(11),
					rs.getString(12), rs.getInt(13), rs.getString(14),
					rs.getString(15), rs.getString(16));

		}
		ps.close();
		cn.close();
		return obtenido;
	}

	@Override
	public List<ClienteDTO> listarClientes() throws SQLException {
		cn = new SQLConnection().GetConnection();
		String sql = "select * from CLIENTE";
		ps = cn.prepareStatement(sql);
		rs = ps.executeQuery();
		List<ClienteDTO> lista = new ArrayList<ClienteDTO>();
		while (rs.next()) {

			lista.add(new ClienteDTO(rs.getInt(0), rs.getString(1), rs
					.getString(2), rs.getString(3), rs.getString(4), rs
					.getString(5), rs.getInt(6), rs.getInt(7), rs.getInt(8), rs
					.getInt(9), rs.getString(10), rs.getInt(11), rs
					.getString(12), rs.getInt(13), rs.getString(14), rs
					.getString(15), rs.getString(16)));

		}
		ps.close();
		cn.close();
		return lista;
	}

	@Override
	public void actualizaCliente(String nombre, String apellidoPaternoCliente,
			String apellidoMaternoCliente, String dniCliente,
			String rucCliente, int telefonoDomCliente, int celularCliente,
			int telefonoTrabCliente, int codigoDept, String descripcionDept,
			int codigoProvincia, String descripcionProvincia,
			int codigoDistrito, String descripcionDistrito,
			String direccionCliente, String empresaCliente) throws SQLException {

		cn = new SQLConnection().GetConnection();
		String sql = "update CLIENTE set NOM_CLI =?,APE_PAT_CLI=? ,APE_MAT_CLI =?,TIPO_DOC_CLI =?,DNI_CLI =?,RUC_CLI =?,TELEF_DOM_CLI=? ,TELEF_CEL_CLI =?, TELEF_TRAB_CLI =?,COD_DEPARTAMENTO=? ,	COD_PROVINCIA =?,COD_DISTRITO =?,DIRECCION_CLI =?,EMPRESA_CLI=?";
		ps = cn.prepareStatement(sql);
		ps.setString(1, nombre);
		ps.setString(2, apellidoPaternoCliente);
		ps.setString(3, apellidoMaternoCliente);
		ps.setString(4, dniCliente);
		ps.setString(5, rucCliente);
		ps.setInt(6, telefonoDomCliente);
		ps.setInt(7, celularCliente);
		ps.setInt(8, telefonoTrabCliente);
		ps.setInt(9, codigoDept);
		ps.setString(10, descripcionDept);
		ps.setInt(11, codigoProvincia);
		ps.setString(12, descripcionProvincia);
		ps.setInt(13, codigoDistrito);
		ps.setString(14, descripcionDistrito);
		ps.setString(15, direccionCliente);
		ps.setString(16, empresaCliente);
		int rst = ps.executeUpdate();
		
		if(rst>0){
			System.out.println("Cliente Modificado");
		}
		ps.close();
		cn.close();
		
		

	}

	@Override
	public void ingresaCliente(ClienteDTO clienteDTO) {
		
		try {
			cn = new SQLConnection().GetConnection();
			String sql="insert into CLIENTE values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
			ps = cn.prepareStatement(sql);
			ps.setInt(1, clienteDTO.getCodigoCliente());
			ps.setString(2, clienteDTO.getNombre());
			ps.setString(3, clienteDTO.getApellidoPaterno());
			ps.setString(4, clienteDTO.getApellidoMaterno());
			ps.setString(5, clienteDTO.getDni());
			ps.setString(6, clienteDTO.getRuc());
			ps.setInt(7, clienteDTO.getTelefonoDomCliente());
			ps.setInt(8, clienteDTO.getCelularCliente());
			ps.setInt(9, clienteDTO.getTelefonoTrabCliente());
			ps.setInt(10, clienteDTO.getCodigoDept());
			ps.setString(11, clienteDTO.getDescripcionDept());
			ps.setInt(12, clienteDTO.getCodigoProvincia());
			ps.setString(13, clienteDTO.getDescripcionProvincia());
			ps.setInt(14, clienteDTO.getCodigoDistrito());
			ps.setString(15, clienteDTO.getDescripcionDistrito());
			ps.setString(16, clienteDTO.getDireccionCliente());
			ps.setString(17, clienteDTO.getEmpresaCliente());
			
			int rst = ps.executeUpdate();
			ps.close();
			cn.close();
			
			System.out.println("Cliente registrado");
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
		

	}

	@Override
	public void eliminaCLiente(String dniCliente) {
		
		try {
			cn = new SQLConnection().GetConnection();
			String sql="delete from CLIENTE where DNI_CLI=?";
			ps = cn.prepareStatement(sql);
			ps.setString(1, dniCliente);
			rs=ps.executeQuery();
			ps.close();
			cn.close();
			
			
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

}
